package com.gome.gop.common;

import java.io.Serializable;

/**
 * 返回给客户端的消息结构
 */
public class ActionResult implements Serializable{
    /**
	 * 
	 */
	private static final long serialVersionUID = 3954905268200716429L;

	/**
     * 操作结果代码 0 - 成功 1 - 失败 2 - 无权限 3 - 未登录 4 - 超时 5 - 发送短信异常  6 - 验证码异常
     */
    private int retcode = 0;

    /**
     * 操作结果的描述
     */
    private String retmesg = "";

    /**
     * 返回的数据
     */
    private Object retdata = null;

    /**
     * 默认构造函数
     */
    public ActionResult() {
    }

    /**
     * 构造函数
     * 
     * @param code
     *            操作结果代码
     * @param message
     *            操作结果的描述
     * @param data
     *            返回数据
     * 
     */
    public ActionResult(int code, String message, Object data) {
        this.retcode = code;
        this.retmesg = message;
        this.retdata = data;
    }

    /**
     * 操作成功（0：成功）
     * 
     * @param message
     *            操作结果的描述
     * @return ActionResult
     */
    public static ActionResult success(String message) {
        return new ActionResult(0, message, null);
    }

    /**
     * 操作成功（0：成功）
     * 
     * @param message
     *            操作结果的描述
     * @param data
     *            返回数据
     * @return ActionResult
     */
    public static ActionResult success(String message, Object data) {
        return new ActionResult(0, message, data);
    }

    /**
     * 操作失败（1：失败）
     * 
     * @param message
     *            操作结果的描述
     * @return ActionResult
     */
    public static ActionResult fail(String message) {
        return new ActionResult(1, message, null);
    }

    /**
     * 操作失败（1：失败）
     * 
     * @param message
     *            操作结果的描述
     * @param data
     *            返回数据
     * @return ActionResult
     */
    public static ActionResult fail(String message, Object data) {
        return new ActionResult(1, message, data);
    }


    /**
     * 未获得权限（2：无权限）
     * 
     * @param message
     *            才
     * @return ActionResult
     */
    public static ActionResult noauth(String message) {
        return new ActionResult(2, message, null);
    }

    /**
     * 未获得权限（2：无权限）
     * 
     * @param message
     *            操作结果的描述
     * @param data
     *            返回数据
     * @return ActionResult
     */
    public static ActionResult noauth(String message, Object data) {
        return new ActionResult(2, message, data);
    }

    /**
     * 未登录（3：未登录）
     * 
     * @param message
     *            操作结果的描述
     * @return ActionResult
     */
    public static ActionResult nologin(String message) {
        return new ActionResult(3, message, null);
    }

    /**
     * 未登录（3：未登录）
     * 
     * @param message
     *            操作结果的描述
     * @param data
     *            返回数据
     * @return ActionResult
     */
    public static ActionResult nologin(String message, Object data) {
        return new ActionResult(3, message, data);
    }

    /**
     * session超时（4：超时）
     * 
     * @param message
     *            操作结果的描述
     * @return ActionResult
     */
    public static ActionResult timeout(String message) {
        return new ActionResult(4, message, null);
    }

    /**
     * session超时（4：超时）
     * 
     * @param message
     *            操作结果的描述
     * @param data
     *            返回数据
     * @return ActionResult
     */
    public static ActionResult timeout(String message, Object data) {
        return new ActionResult(4, message, data);
    }

    /**
     * 获取操作结果代码
     * 
     * @return 操作结果代码
     */
    public int getRetcode() {
        return retcode;
    }

    /**
     * 设置操作结果代码
     * 
     * @param retcode
     *            操作结果代码
     */
    public void setRetcode(int retcode) {
        this.retcode = retcode;
    }

    /**
     * 获取操作结果的描述
     * 
     * @return 操作结果的描述
     */
    public String getRetmesg() {
        return retmesg;
    }

    /**
     * 设定操作结果的描述
     * 
     * @param retmesg
     *            操作结果的描述
     */
    public void setRetmesg(String retmesg) {
        this.retmesg = retmesg;
    }

    /**
     * 获取返回数据
     * 
     * @return 返回数据
     */
    public Object getRetdata() {
        return retdata;
    }

    /**
     * 设置返回数据
     * 
     * @param retdata
     *            返回数据
     */
    public void setRetdata(Object retdata) {
        this.retdata = retdata;
    }

	public static ActionResult lowSuccess(int code, String message, Object data) { 
		// TODO Auto-generated method stub
		return new ActionResult(code, message, data);
	}

}
